//加载express框架
let express = require("express");
let router = express.Router();
//加载ejs模板引擎
// let ejs = require("ejs");
// app.set("view engine", "html");//加载html引擎
// app.set("views", __dirname + "/view2");//加载视图文件目录地址
// app.engine("html", ejs.__express);
// //加载静态资源文件
// app.use(express.static(__dirname + "/public"));

//加载获取文件域包
let formidable = require("formidable");

//加载时间戳
let time = require("time-stamp")

//加载path模块
let path = require("path");

//加载fs模块
let fs = require("fs");
const { promisify } = require("util");

//渲染上传页面
router.get("/upload", (req, res) => {
    res.render("upload.html");
})


//处理表单提交数据
router.post("/upload", (req, res) => {
    let form = new formidable.IncomingForm();//获取文件域提交信息

    //解决跨磁盘 把原来的虚拟的地址指向当前项目目录结构下
    //d:
    form.uploadDir = __dirname + "/tmp";
    /*
     *  第一个参数:请求数据
     *  第二个参数：回调函数
     *            (err,file,fileds)
     *  err:上传文件是否成功或者失败
     *  file:获取文本框输入的值
     *  fileds:获取文件域的信息
     * 
     * */
    form.parse(req, (err, file, fileds) => {
        console.log(err);
        //console.log(fileds);
        let uploadfile = fileds.pic1;
        console.log(uploadfile);
        //图片更名  随机数+时间戳
        //随机数
        let r = parseInt(Math.random() * 10000);
        //时间戳  下载time-stamp包
        let t = time("YYYYMMDD");
        //获取图片后缀名
        let extname = path.extname(uploadfile.originalFilename);
        //console.log(extname);

        //获取原来虚拟地址
        let oldpath = uploadfile.filepath;
        //规划新上传地址
        //D:\Users\Desktop\0726-3\day9\代码/upload/901820221013.jpg
        let newpath = __dirname + "/upload/" + r + t + extname;
        console.log(oldpath,newpath);
        //原来图片地址是在默认虚拟地址中  地址更改到当前项目下的upload文件夹下
        fs.rename(oldpath, newpath, (err) => {
            if (err) {
                res.send("上传失败")
            } else {
                res.send("上传成功");
            }
        })


    })
})



//渲染图片首页
router.get("/imgindex",async (req,res)=>{
   const readdir= promisify(fs.readdir)
   const result = await readdir(path.join(__dirname,"/upload"))
   console.log(result)
   const newResult = result.map(i=>`../upload/${i}`)
   res.render("./imgindex.html",{imglist:newResult});
})



module.exports = router;